<?php
	class sistFuncionalidadesRecord extends ManipulaBanco
	{
		public function cadastrarFuncionalidades($dados)
		{
			//CRIA A ROLE NO BANCO DE DADOS
			$sql = "CREATE ROLE ".$dados['nome'];
			$this->executar($sql);
			
			//SALVA OS DADOS DA ROLE NA TABELA
			return $this->salvar($dados);
		}

		public function atualizarFuncionalidades($dados,$codFuncionalidades)
		{
			return $this->atualizar($dados,$codFuncionalidades);
		}

		public function excluirFuncionalidades($codFuncionalidades,sistFuncionalidadesPerfilRecord $objFuncPerfil)
		{
			$dados = $this->dadosFuncionalidades($codFuncionalidades);
			
			if($this->revogarRole($dados['NOME']['0']))
			{
				if($objFuncPerfil->excluirFuncionalidades($codFuncionalidades))
				{
					$criteria = new TCriteria();
					$criteria->add(new TFilter('cod','=',$codFuncionalidades));
					
					unset($dados);
					
					$dados['situacao'] = '0';
					
					return $this->atualizarFuncionalidades($dados,$codFuncionalidades);
				} else
				{
					return false;
				}
			} else
			{
				return false;
			}
		}

		public function listarFuncionalidades()
		{
			$criteria = new TCriteria();
			$criteria->add(new TFilter('situacao','=','1'));

			return $this->selecionarColecao($criteria);
		}
		
		public function dadosFuncionalidades($codFuncionalidade)
		{
			$criteria = new TCriteria();
			$criteria->add(new TFilter('cod','=',$codFuncionalidade));
			
			return $this->selecionar($criteria);
		}
		
		public function formatarNomeFuncionalidades($nome)
		{
			$nome = trim($nome);
			
			$nome = strtolower($nome);
			
			$aux = str_replace(" ","",$nome);
			
			return $aux;
		}
		
		public function revogarRole($nomeRole)
		{
			$sql = "DROP OWNED BY ".$nomeRole;
			
			if($this->executar($sql))
			{
				$sql = "DROP ROLE ".$nomeRole;
				
				return $this->executar($sql);
			} else
			{
				return false;
			}
		}
	}
?>